package com.itheima.ssm.service;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.itheima.ssm.mapper.UserMapper;
import com.itheima.ssm.pojo.User;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import java.util.List;
/**
 * @作者 itcast
 * @创建日期 2020/11/2 11:27
 **/
@Service
@Transactional
@Slf4j
public class UserService {
    private static final Logger LOGGER = LoggerFactory.getLogger(UserService.class);
    @Autowired
    UserMapper userMapper;
    // debug  info  warn error
    // log4j   logback
    // 操作redis的模板类
    @Autowired
    StringRedisTemplate redisTemplate;
    public List<User> findAll(){
        // 1. 去redis中判断是否有集合数据
        String userListJson = redisTemplate.boundValueOps("user_list").get();
        // 判断缓存是否为空
        if(StringUtils.isEmpty(userListJson)){
            log.info("缓存中没有数据,从数据库中查询"); // info   error
            // 没有  去数据库查询 并且存入到redis中
            List<User> all = userMapper.findAll();
            redisTemplate.boundValueOps("user_list").set(JSON.toJSONString(all));
            return all;
        }
        log.info("从缓存中查询到了数据");
        // 有    return
        return JSONArray.parseArray(userListJson,User.class);
    }
    public void insert(User user){
        userMapper.insert(user);
        // 清空缓存
        redisTemplate.delete("user_list");
    }
}
